DBEdit a Post
Otázka od: Martin Pisarik
3. 5. 2004 12:46
Ahoj *,
mam zajimavy problem. V aplikaci mam spoustu DBEditu a vsechny funguji tak
jak maji, krome dvou. Ty dva edity nepropisuji hodnoty do databaze,
zobrazuji je spravne, ale nepropisuji. Oba pracuji s tabulkou, ktera ma jen
jeden zaznam.
Problem jsem vyresil tak, ze v OnExit tech zminenych editu zavolam toto:
if (D->Tbl->State==dsEdit) {
D->Tbl->Post();
}
Funguje to, ale mam z toho divny pocit, uz proto, ze TEdit vyuzivam hodne a
ted mam strach, ze to treba nebude stoprocentne fungovat. Nevite nekdo cim
by to mohlo byt? Dataset a Edity mam nastaveny stejne jako ty ostatni co
funguji, Tabulka se taky jevi OK.
ADO, MySQL, BCB6
Dik za rady.
Odpovedá: Jan Rizek
3. 5. 2004 20:00
a zapisuje se do nich pouze uzivatel nebo je plnite programove ?
pokud je plnite programove musite to delat takto:
with DBEdit1.DataSource.DataSet do
if not (State in [dsEdit, dsInsert]) then Edit;
FieldByName('VASE_POLICKO').AsInteger:= 15;
{popripade}
Post; {Apply} {Commit}
end;
----
pokud zapisujete do DBEdt1.text je to spatne..
----- Original Message -----
From: "Martin Pisarik" <martin.pisarik@seznam.cz>
To: <delphi-l@clexpert.cz>
Sent: Monday, May 03, 2004 1:24 PM
Subject: DBEdit a Post
> Ahoj *,
>
> mam zajimavy problem. V aplikaci mam spoustu DBEditu a vsechny funguji tak
> jak maji, krome dvou. Ty dva edity nepropisuji hodnoty do databaze,
> zobrazuji je spravne, ale nepropisuji. Oba pracuji s tabulkou, ktera ma
jen
> jeden zaznam.
> Problem jsem vyresil tak, ze v OnExit tech zminenych editu zavolam toto:
> if (D->Tbl->State==dsEdit) {
> D->Tbl->Post();
> }
> Funguje to, ale mam z toho divny pocit, uz proto, ze TEdit vyuzivam hodne
a
> ted mam strach, ze to treba nebude stoprocentne fungovat. Nevite nekdo cim
> by to mohlo byt? Dataset a Edity mam nastaveny stejne jako ty ostatni co
> funguji, Tabulka se taky jevi OK.
>
> ADO, MySQL, BCB6
>
> Dik za rady.
>
>
>
>
>
>
>
>
>
Odpovedá: Martin Pisarik
3. 5. 2004 20:00
Ne prave ze do nich zapisuje uzivatel, ale z nejakeho zahadneho duvodu to
nepropisuje do databaze. Musim to programove postnout v onExit eventu a to
je divny. Ostatni DBEdity mi funguji dobre, jen tyhle dva ne. Je tam urcite
nejaka blba chyba, jen ji nemuzu najit...
-----Original Message-----
From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz]On
Behalf Of Jan Rizek
Sent: Monday, May 03, 2004 4:51 PM
To: delphi-l@clexpert.cz
Subject: Re: DBEdit a Post
a zapisuje se do nich pouze uzivatel nebo je plnite programove ?
pokud je plnite programove musite to delat takto:
with DBEdit1.DataSource.DataSet do
if not (State in [dsEdit, dsInsert]) then Edit;
FieldByName('VASE_POLICKO').AsInteger:= 15;
{popripade}
Post; {Apply} {Commit}
end;
----
pokud zapisujete do DBEdt1.text je to spatne..
----- Original Message -----
From: "Martin Pisarik" <martin.pisarik@seznam.cz>
To: <delphi-l@clexpert.cz>
Sent: Monday, May 03, 2004 1:24 PM
Subject: DBEdit a Post
> Ahoj *,
>
> mam zajimavy problem. V aplikaci mam spoustu DBEditu a vsechny funguji tak
> jak maji, krome dvou. Ty dva edity nepropisuji hodnoty do databaze,
> zobrazuji je spravne, ale nepropisuji. Oba pracuji s tabulkou, ktera ma
jen
> jeden zaznam.
> Problem jsem vyresil tak, ze v OnExit tech zminenych editu zavolam toto:
> if (D->Tbl->State==dsEdit) {
> D->Tbl->Post();
> }
> Funguje to, ale mam z toho divny pocit, uz proto, ze TEdit vyuzivam hodne
a
> ted mam strach, ze to treba nebude stoprocentne fungovat. Nevite nekdo cim
> by to mohlo byt? Dataset a Edity mam nastaveny stejne jako ty ostatni co
> funguji, Tabulka se taky jevi OK.
>
> ADO, MySQL, BCB6
>
> Dik za rady.
>
>
>
>
>
>
>
>
>
Odpovedá: Karel Rys
4. 5. 2004 6:42
Cim uzivatel ukoncuje to dialogove okno? Kdyz jsem treba v udalosti OnClick
tlacitka OK chtel
testovat hodnoty poli, stavalo se mi (D5), ze jsem nejprve rucne musel dat
OK.SetFocus a teprve
pote testy provest. V D5 (a mozna i dalsich) je podle me chyba, ze kdyz
uzivatel na OK "klikne"
stiskem Alt+O, policko, ve kterem byl predtim Focus, nedostane udalost
OnExit...
Karel Rys
Martin Pisarik dne 3 May 2004 v 17:59:
> Ne prave ze do nich zapisuje uzivatel, ale z nejakeho zahadneho duvodu
> to nepropisuje do databaze. Musim to programove postnout v onExit
> eventu a to je divny. Ostatni DBEdity mi funguji dobre, jen tyhle dva
> ne. Je tam urcite nejaka blba chyba, jen ji nemuzu najit...
Odpovedá: Martin Pisarik
4. 5. 2004 8:05
Neni to dialogove okno, mam to na MainFormu. Problem je, ze i kdyz se z tech
editboxu premistim, treba mysi nebo tabulatorem, onExit se zavola, ale do DB
tabulky to nic nepropise! Musim v onExit udelat Tabulka->Post() a pak je to
dobry. Mam na formu spoustu dbeditu a vsechno funguje dobre krome tech dvou,
ktere pracuji s jednou tabuklou. Napada me, ze mozna vadi, ze ta tabulka ma
jediny zaznam. Ty edity zobrazuji data koreknte, jen je nemeni. Tabulka i
edity jsou stejne nastavene jako ostatni tabulky a edity u kterych to
funguje, tak nevim...
-----Original Message-----
From: delphi-l-owner@clexpert.cz [mailto:delphi-l-owner@clexpert.cz]On
Behalf Of Karel Rys
Sent: Tuesday, May 04, 2004 7:32 AM
To: delphi-l@clexpert.cz
Subject: Re: DBEdit a Post
Cim uzivatel ukoncuje to dialogove okno? Kdyz jsem treba v udalosti OnClick
tlacitka OK chtel
testovat hodnoty poli, stavalo se mi (D5), ze jsem nejprve rucne musel dat
OK.SetFocus a teprve
pote testy provest. V D5 (a mozna i dalsich) je podle me chyba, ze kdyz
uzivatel na OK "klikne"
stiskem Alt+O, policko, ve kterem byl predtim Focus, nedostane udalost
OnExit...
Karel Rys
Martin Pisarik dne 3 May 2004 v 17:59:
> Ne prave ze do nich zapisuje uzivatel, ale z nejakeho zahadneho duvodu
> to nepropisuje do databaze. Musim to programove postnout v onExit
> eventu a to je divny. Ostatni DBEdity mi funguji dobre, jen tyhle dva
> ne. Je tam urcite nejaka blba chyba, jen ji nemuzu najit...
Odpovedá: Ludek Paral
4. 5. 2004 12:16
Ahoj,
mel jsem podobny problem a musel jsem jej resit tak, ze jsem nepracoval s
datasetem (ten obdrzi info o nove hodnote pozdeji az po validaci), ale primo
s hodnotou ulozenou v edit boxu. Jinak doporuceni zde na konferenci je :
nepouzivat editacni boxy napojene na dataset, ale to je na dyl.
Ludek